package newcrunch.tests;





//for use by other tests
/**
 * @author WL
 */

public class TreeTest
{
}
interface Small<U>
{
    public interface Inner<V>{}
}

//test ampersand in <... extends ... & ...>
class ClassDeclTest1<T extends java.util.List<Integer> & java.util.Comparator<? super java.util.Collection<Integer>>>
{
}

//test question mark in generics
class ClassDeclTest2<T extends java.util.Comparator<?>>
{
}

//test inner class extension with generics wildcard
class ClassDeclTest3<T extends Small.Inner<?>>
{
}

//test extends
strictfp class ClassDeclTest4 extends java.util.HashMap<java.util.List<Integer>, Integer>
{
}

//test implements
class ClassDeclTest5 implements java.util.Comparator<Integer>, Small<java.util.List<Integer>>
{
    @Override
    public int compare(Integer o1, Integer o2) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}

//combine everything
class ClassDeclTest6<T extends java.util.List<Integer> & java.util.Comparator<? super java.util.Collection<Integer>>>
    extends java.util.HashMap<java.util.List<Integer>, Integer>
    implements java.util.Comparator<Integer>, Small<java.util.List<Integer>>
{
    @Override
    public int compare(Integer o1, Integer o2) {
        throw new UnsupportedOperationException("Not supported yet.");
    }    
}

class DoubleLayerTest<T>
{
    public class Inner<U> 
    {
        int innerMember = 0;
    }
    private int z;
}

strictfp enum EnumDeclTest1 implements java.util.Comparator<Integer>, Small<java.util.List<Integer>>
{
    @Deprecated APPLE() { }, ORANGE, PEAR;
    @Override
    public int compare(Integer o1, Integer o2) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    @AnnotationDeclTest1
    (id = 0)
    public void foo() throws java.lang.IllegalArgumentException, java.lang.RuntimeException{}
    static {
        int i = 0;
    }
    static class Test
    {
        static java.util.Collection<Integer> first, second[];
    }
    @Deprecated private volatile int[][] i;
    public transient DoubleLayerTest<Object>.Inner<Integer>[][] x[], y;
}

strictfp interface InterfaceDeclTest1<T extends java.util.List<Integer> & java.util.Comparator<? super Integer>>
{
}

interface InterfaceDeclTest2<T extends java.util.Comparator<?>>
{
}

interface InterfaceDeclTest3<T extends Small.Inner<?>>
{
}

interface InterfaceDeclTest4
{
    public static final int a = 0, e[] = null, g = 3;
    public <T> void test(java.util.List<T> arg);
}

strictfp @interface AnnotationDeclTest1
{
    int id() default 10;
    
    @interface InnerAnnotation
    {
        String innerId() default "nothing interesting";
        Class<java.util.List<Integer>> classObject();
    }
}

class MethodsTest
{
    public MethodsTest(){}
    public int test()[][] { return null; }
    java.util.HashMap<java.util.List<Integer>, Integer> another()[] { return null; }
    public void ellipsis1(final java.util.List<Integer>... test) {}
    private void ellipsis2(int a, @Deprecated final java.util.List<Integer>... test) {}
    protected void ellipsis3(java.util.HashMap<java.util.List<Integer>, Integer> z, final java.util.List<Integer>... test) {}
    public synchronized <T> java.util.List<Integer> bar()[] { return null; }
    int[] exceptionMethod()[] throws java.lang.IllegalArgumentException{ return null; }
}

class TypeOrderTest
{
    int member0;
    protected Object member1;
    private java.util.List<java.applet.AppletContext> member2;
    public Integer[] member3[];
    
    Object method1() { return null; }
    public void method2() {}
    private <T> java.util.List<T> method3() { return null; }
    protected <U> void method4(U u) {}
    @interface Inner1 {}
    interface Inner2{}
    class Inner3{}
    enum Inner4{}
}